#ifndef _ASM_
#define _ASM_

#include <type.h>

void _outl(u16 port,u32 val);
u32 _inl(u16 port);

int _interrupt_flag();

u32 __set_stack(u32 stack,u32 entry_addr,u32 init_flags,u32 args,u32 signal);

u32 _SYSTEM_READ_TIMER();

void read_tsc(u32 *low,u32 *high);

void _reload_pg();
u32 _read_cr0();
u32 _read_cr3();
void _write_cr0(u32 cr0);
void _write_cr3(u32 cr3);

void _load_lmembm();

void _bioscall(u32 eax,u32 ebx,u32 ecx,u32 edx,u32 esi,u32 edi,u16 intno);
extern unsigned short _f;
extern unsigned long _eax;
extern unsigned long _ebx;
extern unsigned long _ecx;
extern unsigned long _edx;
extern unsigned long _esi;
extern unsigned long _edi;

void _asmdel(u32 count);
void _set_all_irqs();

void _mmx_memset(void *dst,u32 val,size_t count);

void _mmx_memcpy(void *dst,void *src,size_t count);
void _sse_memcpy(void *dst,void *src,size_t count);
void _movsd_memcpy(void *dst,void *src,size_t count);

void _getcpu();

#endif
